package org.example.ch04;

import java.util.ArrayList;
import java.util.List;

/**
 * https://leetcode-cn.com/problems/generate-parentheses/
 * 数字 n 代表生成括号的对数，请你设计一个函数，用于能够生成所有可能的并且 有效的 括号组合。
 */
public class GenerateParenthesis {

    public static void main(String[] args) {

        List<String> list = new ArrayList<>();
        solution(0,0,3,"",list);
//        generateParenthesis(0,6,"",list);
        for (String str:list){
            System.out.println(str);
        }
    }



    public static void solution(int left,int right,int max,String path,List<String> list){
        //第一步：递归的终结条件
        if(left==max && right==max){
            System.out.println(path);
            list.add(path);
//            return;
        }
        //第二步：本层逻辑处理
        String r1 = path+"(";
        String r2 = path+")";
        //第三步：下探下一层递归
        if(left<max){
            solution(left+1,right,max,r1,list);
        }
        if(right<max && right<left){
            solution(left,right+1,max,r2,list);
        }
        //第四步：清理当前层
    }
}
